package com.stt.videoprocess.design.processor.impl;

import com.stt.videoprocess.design.model.VideoTask;
import com.stt.videoprocess.design.processor.VideoProcessor;
import lombok.extern.slf4j.Slf4j;

/**
 * 消音处理装饰器
 * 实现音频轨道静音功能
 */
@Slf4j
public class MuteProcessor implements VideoProcessor {
    /**
     * MuteProcessor类用于处理视频任务，具体功能是静音视频中的音频轨道
     * 它通过委托一个VideoProcessor实例来执行实际的处理任务
     */
    private final VideoProcessor processor;

    /**
     * 构造函数，用于初始化MuteProcessor实例
     * @param processor VideoProcessor实例，用于实际处理视频任务
     */
    public MuteProcessor(VideoProcessor processor) {
        this.processor = processor;
    }

    /**
     * 处理视频任务的方法，首先输出一条消息表明开始静音处理，然后委托给processor实例进行实际处理
     * 处理完成后，更新任务的处理步骤信息
     * @param task 视频任务实例，包含待处理的视频信息和处理步骤
     * @throws Exception 如果处理过程中发生错误，抛出异常
     */
    @Override
    public void process(VideoTask task) throws Exception {
        log.info("静音处理...");
        processor.process(task);
        task.setProcessingSteps(task.getProcessingSteps() + "静音");
    }

    /**
     * 获取处理器名称的方法，用于标识MuteProcessor实例
     * @return 返回处理器的名称"MuteProcessor"
     */
    @Override
    public String getProcessorName() {
        return "MuteProcessor";
    }
}